import { pgTable, uuid, unique } from 'drizzle-orm/pg-core';
import { sql } from 'drizzle-orm';
import { simpleAuditFields } from './audit-fields';

/**
 * 系统-角色菜单表
 */
export const sysRoleMenu = pgTable(
  'sys_role_menu',
  {
    /** 关联ID（主键） */
    id: uuid('id').primaryKey().default(sql`uuidv7()`),
    /** 角色ID（逻辑外键，关联 sys_role.id） */
    roleId: uuid('role_id').notNull(),
    /** 菜单ID（逻辑外键，关联 sys_menu.id） */
    menuId: uuid('menu_id').notNull(),
    ...simpleAuditFields(),
  },
  (table) => [
    unique('sys_role_menu_role_id_menu_id_key').on(table.roleId, table.menuId),
  ]
);

export type SysRoleMenu = typeof sysRoleMenu.$inferSelect;
export type NewSysRoleMenu = typeof sysRoleMenu.$inferInsert;

